public class MaxSub{
	public static void main(String[] args) {
		int[] a = { 1, -2, 3, -8, 5, 1 };
		System.out.println(MaxSum(a));
	}

	public static int MaxSum(int a[]){
		int sum = 0;//初始和为0
    		int i = 0;
		int n=a.length;
    		int max = a[i];//最大值最初必为数组第一个元素
    		for(i=0;i< n;i++){
        			sum = sum + a[i];//遍历一个元素，累加一次
        			if(sum < a[i])     //如果加上当前元素之后的和比当前元素还小，则舍弃之前的元素，从当前元素开始累加;如果加上当前元素之后的和比当前元素大,说明可以继续累加;
            				sum = a[i];
        			if(sum > max)   //如果当前和比最大值大，则更新最大值为当前和;否则，不做更新
            				max = sum;  
    		}
    		return max;
	}
}